﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.PRESENTACION.Maestro
{
    public partial class IUMotivo : Form
    {
        List<CONEXION.MOTIVO> motivos;
        CtrlMotivo ctMotivo;

        public IUMotivo()
        {
            InitializeComponent();
            motivos = new List<CONEXION.MOTIVO>();
            ctMotivo = new CtrlMotivo();
        }

        private void IUMotivo_Load(object sender, EventArgs e)
        {
            motivos = ctMotivo.getListMotivo();
            gridMotivos.DataSource = null;
            gridMotivos.DataSource = motivos;
            setRowsReadOnly();
        }

        private void setRowsReadOnly()
        {
            foreach (DataGridViewRow dr in gridMotivos.Rows)
            {
                dr.ReadOnly = true;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtNombreMotivo.Text))
            {
                //procedemos a registrar
                CONEXION.MOTIVO motivo = new CONEXION.MOTIVO()
                {
                    tipoMotivo = txtNombreMotivo.Text
                };

                DialogResult dr = ctMotivo.registrarMotivo(motivo);
                if (dr == DialogResult.OK)
                {
                    //actualizamos la lista      
                    motivos = ctMotivo.getListMotivo();
                    gridMotivos.DataSource = null;
                    gridMotivos.DataSource = motivos;

                    setRowsReadOnly();
                }

                txtNombreMotivo.ResetText();
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridMotivos.SelectedRows.Count > 0)
            {
                btnAgregar.Enabled = false;
                txtNombreMotivo.Enabled = false;
                btnEliminar.Enabled = false;

                switch (btnModificar.Text)
                {
                    case "Modificar":
                        int index = gridMotivos.SelectedRows[0].Index;

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Completar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.accept;

                        //mostramos el boton cancelar
                        btnCancelar.Visible = true;

                        //volvemos la celda editable
                        gridMotivos.SelectedRows[0].ReadOnly = false;
                        gridMotivos.SelectedRows[0].Cells[1].Selected = true;
                        gridMotivos.CurrentCell = gridMotivos.SelectedRows[0].Cells[1];
                        gridMotivos.BeginEdit(true);
                        break;
                    case "Completar":
                        int ind = gridMotivos.CurrentRow.Index;
                        if (gridMotivos.Rows[ind].Cells[1].Value != null)
                        {
                            if (MessageBox.Show("¿Confirma actualizar la operación?", "COTIZAV", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                            {
                                CONEXION.MOTIVO motivo = new CONEXION.MOTIVO()
                                {
                                    idMotivo = gridMotivos.Rows[ind].Cells[0].Value.ToString(),
                                    tipoMotivo = gridMotivos.Rows[ind].Cells[1].Value.ToString()
                                };

                                DialogResult dr = ctMotivo.actualizarMotivo(motivo);
                            }
                        }
                        else
                        {
                            MessageBox.Show("La celda se encuentra vacía", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }

                        //actualizamos la lista      
                        motivos = ctMotivo.getListMotivo();
                        gridMotivos.DataSource = null;
                        gridMotivos.DataSource = motivos;

                        setRowsReadOnly();

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Modificar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

                        //ocultamos  el boton cancelar
                        btnCancelar.Visible = false;

                        //habilitamos el panel superior
                        btnAgregar.Enabled = true;
                        txtNombreMotivo.Enabled = true;
                        btnEliminar.Enabled = true;

                        break;
                }
            }

        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            //actualizamos la lista      
            motivos = ctMotivo.getListMotivo();
            gridMotivos.DataSource = null;
            gridMotivos.DataSource = motivos;

            setRowsReadOnly();

            //cambiamos el boton de modificar
            btnModificar.Text = "Modificar";
            btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

            //ocultamos  el boton cancelar
            btnCancelar.Visible = false;

            //habilitamos el panel superior
            btnAgregar.Enabled = true;
            txtNombreMotivo.Enabled = true;
            btnEliminar.Enabled = true;
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridMotivos.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("¿Confirma eliminar la categoría?", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                {
                    int index = gridMotivos.SelectedRows[0].Index;
                    CONEXION.MOTIVO mot = motivos.ElementAt(index);
                    mot.eliminado = 1;

                    ctMotivo.eliminarCategoria(mot);
                }
            }

            //actualizamos la lista      
            motivos = ctMotivo.getListMotivo();
            gridMotivos.DataSource = null;
            gridMotivos.DataSource = motivos;

            setRowsReadOnly();
        }

        private void gridMotivos_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridMotivos.DataSource != null)
            {
                gridMotivos.Columns["idMotivo"].Visible = false;
                gridMotivos.Columns["tipoMotivo"].HeaderText = "Motivo";
                gridMotivos.Columns["tipoMotivo"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridMotivos.Columns["eliminado"].Visible = false;
            }
        }
    }
}
